#pragma once
#include <iostream>

// 定义新结构体，用于存储长度信息
struct st_encrypt_header {
	size_t struct_size = 0;   // st_encrypt_info_ovino结构体的大小
	size_t xml_size = 0;      // XML文件的大小
	size_t bin_size = 0;      // BIN文件的大小

	st_encrypt_header()
	{
		memset(this, 0, sizeof(st_encrypt_header));
	}
};



// st_encrypt_info_ovino 结构体用于存储加密模型的相关信息
struct st_encrypt_info_cls2_o
{
	char gpu_model[100];

	int batch_size;
	int input_channel;
	int image_width;
	int image_height;

	float img_mean[3];
	float img_std[3];
	bool dynamic;

	char image_order[50];
	int engine_size = 0;

	st_encrypt_info_cls2_o()
	{
		memset(this, 0, sizeof(st_encrypt_info_cls2_o));
	}
};

//==========================================================================================
enum PRECISION_MODE // 精度模式枚举
{
	PRECISION_FP32, // 浮点数 32 位（单精度浮点数）
	PRECISION_FP16, // 浮点数 16 位（半精度浮点数）
	PRECISION_INT8, // 8 位整型
};

// st_trans_model_input 结构体包含模型输入信息
struct st_trans_model_input
{
	std::string cfg_path; // 配置文件路径
	std::string model_path; // 模型文件路径

	PRECISION_MODE precision = PRECISION_FP16; // 设置默认精度为 FP16
	std::string gpu_model = "Intel(R) UHD Graphics 630"; // 使用的 GPU 型号

	std::string trans_path; // 转换后的文件路径
};